package com.jas.generator;

import java.sql.SQLException;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class MyBatisPlusGenerator {

  public static void main(String[] args) throws SQLException {
    // 1.����Դ����
    DataSourceConfig dsConfig = new DataSourceConfig();
    dsConfig.setDbType(DbType.MYSQL).setDriverName("com.mysql.jdbc.Driver")
        .setUrl("jdbc:mysql://192.168.28.201:3306/mybatis_study").setUsername("root").setPassword("root");

    // 1. ȫ������
    GlobalConfig config = new GlobalConfig();
    config.setActiveRecord(true) // �Ƿ�֧��ARģʽ
        .setAuthor("Bean") // ����
        // .setOutputDir("D:\\workspace_mp\\mp03\\src\\main\\java") // ����·��
        .setOutputDir("F:\\stsworkspace\\MyBatisPlusGenerator\\src\\main\\java") // ����·��
        .setFileOverride(true) // �ļ�����
        .setIdType(IdType.AUTO) // ��������
        .setServiceName("%sService") // �������ɵ�service�ӿڵ����ֵ�����ĸ�Ƿ�ΪI
        // IEmployeeService
        .setBaseResultMap(true)// ���ɻ�����resultMap
        .setBaseColumnList(true);// ���ɻ�����SQLƬ��

    // 3. ��������globalConfiguration��
    StrategyConfig stConfig = new StrategyConfig();
    stConfig.setCapitalMode(true) // ȫ�ִ�д����
        .setDbColumnUnderline(true) // ָ������ �ֶ����Ƿ�ʹ���»���
        .setNaming(NamingStrategy.underline_to_camel) // ���ݿ��ӳ�䵽ʵ�����������
        .setTablePrefix("tbl_") // ���������ǰ׺
        .setInclude("tbl_employee"); // ���ɵı�

    // 4. ������������
    PackageConfig pkConfig = new PackageConfig();
    pkConfig.setParent("com.imooc").setMapper("mapper")// dao
        .setService("service")// servcie
        .setController("controller")// controller
        .setEntity("entity").setXml("mapper");// mapper.xml

    // 5. ��������
    AutoGenerator ag = new AutoGenerator();
    ag.setGlobalConfig(config).setDataSource(dsConfig).setStrategy(stConfig).setPackageInfo(pkConfig);
    // 6. ִ��
    ag.execute();
  }
}